﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
* 项目名称 ：ShowMsgModule.ViewModels
* 项目描述 ：
* 类 名 称 ：NavBase
* 类 描 述 ：
* 所在的域 ：DKYFZX_171
* 命名空间 ：ShowMsgModule.ViewModels
* 机器名称 ：DKYFZX_171
* CLR 版本 ：4.0.30319.42000
* 作    者 ：su
* 创建时间 ：2019-09-29 15:35:45
* 更新时间 ：2019-09-29 15:35:45
* 版 本 号 ：v1.0.0.0
*******************************************************************
* Copyright @ su 2019. All rights reserved.
*******************************************************************
//----------------------------------------------------------------*/
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Regions;
using UsingCompositeCommands.Core;

namespace ShowMsgModule.ViewModels
{
    /// <summary>
    /// 功能描述    NavBase.
    /// 创 建 者    ：su
    /// 创建日期    ：2019-09-29 15:35:45
    /// 最后修改者  ：su
    /// 最后修改日期：2019-09-29 15:35:45.
    /// </summary>
    public abstract class NavBase : BindableBase, INavigationAware
    {
        protected IRegionNavigationJournal _journal;
        private string _title = "Base Base";
        public string Title
        {
            get { return _title; }
            set { SetProperty(ref _title, value); }
        }
        public DelegateCommand GoBackCommand { get; private set; }
        private IAppCompositeCommands _appCommands;
        public IAppCompositeCommands AppCommands
        {
            get { return _appCommands; }
            set { SetProperty(ref _appCommands, value); }
        }

        public NavBase(IAppCompositeCommands appComComm)
        {
            AppCommands = appComComm;
            GoBackCommand = new DelegateCommand(GoBackSub, CanGoBack);
            AppCommands.GoBackCommand.RegisterCommand(GoBackCommand);
        }

        private void GoBackSub()
        {
            _journal.GoBack();
        }

        private bool CanGoBack()
        {
            return _journal != null && _journal.CanGoBack;
        }

        private bool CanGoForward()
        {
            return _journal != null && _journal.CanGoForward;
        }

        public abstract void OnNavigatedTo(NavigationContext navigationContext);

        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            return true;
        }

        public abstract void OnNavigatedFrom(NavigationContext navigationContext);
   
    }
}
